<template>
  <a-card :bordered="false">
    <a-row>
      <a-col :md="2" :sm="4">
        <a-select defaultValue="POST" style="width: 90px" @change="handleChange" size="large">
          <a-select-option value="POST">POST</a-select-option>
          <!--<a-select-option value="GET">GET</a-select-option>-->
        </a-select>
      </a-col>
      <a-col :md="22" :sm="20">
        <a-input-search
          placeholder="input send url"
          v-model="url"
          @search="onSearch"
          enterButton="Send"
          size="large"
        />
      </a-col>
    </a-row>

    <a-tabs defaultActiveKey="2">
      <a-tab-pane tab="params" key="2">
        <textarea style="width:100%;font-size: 16px;font-weight:500" :rows="13" @input="changeVal"></textarea>
      </a-tab-pane>
    </a-tabs>

    <a-tabs defaultActiveKey="1">
      <a-tab-pane tab="response" key="1">
        <textarea
          style="width:100%;font-size: 16px;font-weight:500"
          :rows="10"
          v-html="resultJson"
          readonly
        ></textarea>
      </a-tab-pane>
    </a-tabs>
  </a-card>
</template>
<script>
//import Vue from 'vue'
import { postAction, getAction } from "@/api/manage";
import { ACCESS_TOKEN } from "@/store/mutation-types";
export default {
  name: "FlowTest",
  data() {
    return {
      url: "",
      paramJson: "",
      resultJson: {},
      requestMethod: "POST"
    };
  },
  methods: {
    onSearch(value) {
      let that = this;
      this.resultJson = {};
      if ("POST" === this.requestMethod.toUpperCase()) {
        postAction(value, this.paramJson)
          .then(res => {
            console.log(res);
            this.resultJson = res;
          })
          .catch(err => {
            that.$message.error("请求异常：" + err);
          });
      } else {
        getAction(value, this.paramJson)
          .then(res => {
            console.log(res);
            this.resultJson = res;
          })
          .catch(err => {
            that.$message.error("请求异常：" + err);
          });
      }
    },
    changeVal(e) {
      try {
        let json = e.target.value;
        json = json.replace(/\n/g, "");
        json = json.replace(/\s*/g, "");
        if (json.indexOf(",}") > 0) {
          json = json.replace(",}", "}");
        }
        this.paramJson = JSON.parse(json);
      } catch (e) {
        console.log(e);
        this.$message.error("非法的JSON字符串");
      }
    },
    handleChange(value) {
      this.requestMethod = value;
    },
    created() {
      const token = Vue.ls.get(ACCESS_TOKEN);
      this.headers = { "X-Access-Token": token };
    }
  }
};
</script>